﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text;
using Business.Entities;


namespace Data.DataBase
{
    public class EspecialidadAdapter : Data.Database.Adapter
    {
        private static List<Especialidad> _Especialidades;

        public static List<Especialidad> Especialidades
        {
            get 
            { 
                if(_Especialidades == null)
                {
                    _Especialidades = new List<Especialidad>();
                    Especialidad esp;

                    esp = new Especialidad();
                    esp.Id = 1;
                    esp.Descripcion = "Ing. en Sistemas";
                    esp.State = Business.Entities.BusinessEntity.States.Unmodified;

                    _Especialidades.Add(esp);
                }
                return _Especialidades; 
            }
        }

        public Business.Entities.Especialidad GetOne(int id)
        {
            return Especialidades.Find(delegate(Especialidad esp) { return esp.Id == id; });
        }

        public List<Business.Entities.Especialidad> GetAll()
        {
            return new List<Especialidad>(Especialidades);
        }

        public void Save(Especialidad especialidad)
        {
            switch (especialidad.State)
            {
                case BusinessEntity.States.New:
                    Especialidades.Add(especialidad);
                    break;
                case BusinessEntity.States.Modified:
                    Especialidades[Especialidades.FindIndex(delegate(Especialidad e) { return e.Id == especialidad.Id; })] = especialidad;
                    break;
                case BusinessEntity.States.Deleted:
                    this.Delete(especialidad);
                    break;
            }
            especialidad.State = BusinessEntity.States.Unmodified;
        }

        public void Delete(int id)
        {
            this.Delete(this.GetOne(id));
        }

        public void Delete(Especialidad especialidad)
        {
            Especialidades.Remove(especialidad);
        }
    }
}
